title: 犀利开发—jQuery内核详解与实践-5_事件封装机制与解析
date: 2018.1.8
addEventListener(type,function,useCapture)
$(document).ready(function(a){})//一个参数a—引用jQuery函数,并
JQuery(function($){})
$(function(){})
$(function(me){me(‘div’).text(‘jQ函数别名’)})//默认$,或jQuery
不能和原生的load同用
$(window).load()
load,第一次被第二次覆盖了
如果多个文件,ready可以无限多次调用
轻松实现多次调用load事件
    function addLoadEvent(func){
        var oldOnload=window.onload
        if(typeof window.onload!=’function’){
            window.onload=func
        }else{
            window.onload=function(){
                oldOnload();
                func()
            }
        }
    }
原生比库执行效率更高(选择器,和事件模型)
load更好,不用担心兼容,且两者可以混合使用
浏览器兼容性很大差异的鼠标事件,jQ
DOMContentLoaded;IE,onreadystatechange–document.readyState===’complete’
注销,避免反复触发
针对IE,模拟DOMContentLoaded事件的方法:判断document是否可以滚动
DOMextend(“bind”,function(type,data,fn){
    var _this=_this
    if(_this.addEventListener){
        _this.addEventListener(type,function(event){
            event.datas=data
            fn(event)
        },false)
    }else{
        _this.attachEvent(“on”+type,function(){
            var event=window.event
        })
    }
    return _this
})
bind基础上添加注销行为
2018.1.12 星期五 00:11 P242